"""
209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target 。

找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, ..., numsr-1, numsr] ，并返回其长度。如果不存在符合条件的子数组，
返回 0 。

输入：target = 7, nums = [2,3,1,2,4,3]
输出：2
解释：子数组[4,3]是该条件下的长度最小的子数组。


示例 2：
输入：target = 4, nums = [1,4,4]
输出：1

示例 3：
输入：target = 11, nums = [1,1,1,1,1,1,1,1]
输出：0
"""
class Solution:
    def minSubArrayLen(self, target: int, nums: List[int]) -> int:
        slow, fast = 0, 0
        n = len(nums)
        sum_ = 0
        res = []
        for i in range(n):
            if nums[i] >= target:
                return 1
            sum_ += nums[i]
            while sum_ >= target:
                res.append(i-slow+1)
                sum_ -= nums[slow]
                slow += 1
        if len(res) == 0:
            return 0
        else:
            return min(res)

if __name__ == '__main__':
    target = 7
    nums = [2, 3, 1, 2, 4, 3]
    aa = Solution()
    s= aa.minSubArrayLen(target,nums)
    print(s)        

#有点感慨，仔细想了一会儿，我居然做出来了，虽然这里多设定了一个没用的fast变量
